//
//  TableviewControllerDemo1.m
//  UILbrary
//
//  Created by mac on 17/5/2.
//  Copyright © 2017年 mac. All rights reserved.
//

#import "TableviewControllerDemo1.h"
#import "WBB_AlertView.h"

@interface TableviewControllerDemo1 ()<UITableViewDelegate, UITableViewDataSource>
@property (nonatomic, strong) UITableView *tableview;
@property (nonatomic, assign) UITableViewScrollPosition scrollType;
@property (nonatomic, strong) NSArray *scrollTypeArr;
/// 选中的 cell index
@property (nonatomic, strong) NSIndexPath *selectIndex;
@end

@implementation TableviewControllerDemo1

- (void)viewDidLoad {
    [super viewDidLoad];
    [self.view addSubview:self.tableview];
    
    [self addSelectCellButton];
    
    self.scrollType = UITableViewScrollPositionNone;
    self.scrollTypeArr =
  @[@"UITableViewScrollPositionNone",
    @"UITableViewScrollPositionTop",
    @"UITableViewScrollPositionMiddle",
    @"UITableViewScrollPositionBottom"];
   
}

- (void)addSelectCellButton{
    UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithTitle:@"选择cell" style:UIBarButtonItemStylePlain target:self action:@selector(selectCellMethod)];
   
    
    UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithTitle:@"动画效果" style:UIBarButtonItemStylePlain target:self action:@selector(selectAnimate)];
    
    self.navigationItem.rightBarButtonItems = @[item1,item2];
}

//MARK:- 按钮事件

- (void)selectCellMethod{
    //随机选择
    NSInteger row = arc4random()%100;
    NSIndexPath *index = [NSIndexPath indexPathForRow:row inSection:0];
    self.selectIndex = index;
    
    NSString *message = [NSString stringWithFormat:@"选择了第: %ld 个cell",self.selectIndex.row];
    [WBB_AlertView showAlertViewOnViewController:self title:@"代码选中cell" message:message sureButtonClick:^{
        
#pragma mark :- 核心代码
        [self.tableview selectRowAtIndexPath:index animated:YES scrollPosition:self.scrollType];
    } canselButtonClick:^{
        
    }];
    
}

/*
    tableview 的方法
    selectRowAtIndexPath: animated: scrollPosition: 作用如下:

    1. 选择 通过 index 查找的 cell
    2. 可选择的 滚动动画
    3. 不会调用代理 tableView:willSelectRowAtIndexPath
    tableView:didSelectRowAtIndexPath
    4. UITableViewSelectionDidChangeNotification 通知不会起作用

    参数: scrollPosition
    枚举型:
     typedef NS_ENUM(NSInteger, UITableViewScrollPosition) {
     UITableViewScrollPositionNone,
     UITableViewScrollPositionTop,
     UITableViewScrollPositionMiddle,
     UITableViewScrollPositionBottom
     };
    - UITableViewScrollPositionNone
      以最小的滚动动画 让特定cell 滑到可见状态(当cell 在屏幕外面时 有滚动效果, 当cell 本身处于可见状态 无滚动效果)
      如果 选中cell 在当前可见cell 的 顶部 ,则tableview 向上滚动
    - UITableViewScrollPositionTop
      选中 cell 在当前可见cell 的 顶部 tableview 向上滑动动画效果
    - UITableViewScrollPositionMiddle
      选中 cell 在当前可见cell 的 中部 选中 cell 滑动到中部 动画
    - UITableViewScrollPositionBottom
      选中 cell 在当前可见cell 的 底部 tableview 向下滑动动画效果
 */

- (void)selectAnimate{
    
//    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"动画效果" message:@"" preferredStyle:UIAlertControllerStyleActionSheet];
//    UIAlertAction *action1 = [UIAlertAction actionWithTitle:self.scrollTypeArr[0] style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
//        self.scrollType = UITableViewScrollPositionNone;
//    }];
//    UIAlertAction *action2 = [UIAlertAction actionWithTitle:self.scrollTypeArr[1] style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
//        self.scrollType = UITableViewScrollPositionTop;
//    }];
//    
//    UIAlertAction *action3 = [UIAlertAction actionWithTitle:self.scrollTypeArr[2] style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
//        self.scrollType = UITableViewScrollPositionMiddle;
//    }];
//    UIAlertAction *action4 = [UIAlertAction actionWithTitle:self.scrollTypeArr[3] style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
//        self.scrollType = UITableViewScrollPositionBottom;
//    }];
//    
//    NSArray *actionArr = @[action1,action2,action3,action4];
//  
//    for (UIAlertAction *action in actionArr) {
//        [alertController addAction:action];
//    }
//    [self presentViewController:alertController animated:YES completion:^{
//        
//    }];
    
    //对上面的代码进行封装
    [WBB_AlertView showSheetAlertViewWithViewController:self Title:@"动画类型" message:nil sheetTitleArr:self.scrollTypeArr complete:^(NSInteger index) {
        self.scrollType = index;
    }];
}

#pragma mark - tableview delegate

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return 100;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
    cell.textLabel.numberOfLines = 0;
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    cell.textLabel.text = [NSString stringWithFormat:@"cell ----- <%ld>",indexPath.row];
    
    return cell;
}



- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    
}

#pragma mark - lazy methods

- (UITableView *)tableview{
    if (!_tableview) {
        _tableview = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleGrouped];
        _tableview.translatesAutoresizingMaskIntoConstraints = NO;
        _tableview.backgroundColor = [UIColor whiteColor];
        _tableview.tableFooterView = [UIView new];
        _tableview.delegate = self;
        _tableview.dataSource = self;
       
        [_tableview registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"];
        
    }
    return _tableview;
}

@end
